/**
 * @ngdoc function services
 * @name functionServices
 * @description
 * # Application_NG：函数服务
 */
(function () {
    'use strict';
    appModule.service('functionServices', [
        'toastr',
        function (toastr) {
            //设置 cookie 值的函数
            this.setCookie = function (cname, cvalue, exdays) {
                var d = new Date();
                d.setTime(d.getTime() + (exdays * 24 * 60 * 60 * 1000));
                var expires = "expires=" + d.toGMTString();
                document.cookie = cname + "=" + cvalue + "; " + expires;
            };
            //获取 cookie 值的函数
            this.getCookie = function (cname) {
                var name = cname + "=";
                var ca = document.cookie.split(';');
                for (var i = 0; i < ca.length; i++) {
                    var c = ca[i].trim();
                    if (c.indexOf(name) == 0) return c.substring(name.length, c.length);
                }
                return null;
            };
            //删除 cookie 值的函数（单条）
            this.delCookie = function (cname) {
                var exp = new Date();
                exp.setTime(exp.getTime() - 1);
                var name = cname + "=";
                var ca = document.cookie.split(';');
                var cval = null;
                for (var i = 0; i < ca.length; i++) {
                    var c = ca[i].trim();
                    if (c.indexOf(name) == 0) {
                        cval = c.substring(name.length, c.length);
                    }
                }
                if (cval != null) {
                    document.cookie = name + "=" + cval + ";expires=" + exp.toGMTString();
                    return true;
                } else {
                    console.log('未找到cookie：' + cname);
                    return false;
                }
            };
            //删除 cookie 值的函数（所有）
            this.delAllCookie = function (cname) {
                var keys = document.cookie.match(/[^ =;]+(?=\=)/g);
                if (keys) {
                    for (var i = keys.length; i--;)
                        document.cookie = keys[i] + '=0;expires=' + new Date(0).toUTCString()
                }
            };
            //计算两个时间的差值   时间格式：'2018-4-26 15:01:00' 或 '2018-04-26T11:39:54.067Z'
            this.countBetweenTime = function (begintime, endtime) {
                var date1 = new Date(begintime);  //开始时间  
                var date2 = endtime ? new Date(endtime) : new Date();    //结束时间  
                if (date1 > date2) {
                    return null;
                };
                var date3 = date2.getTime() - date1.getTime()  //时间差的毫秒数  
                //计算出相差天数  
                var days = Math.floor(date3 / (24 * 3600 * 1000));
                //计算出小时数  
                var leave1 = date3 % (24 * 3600 * 1000);   //计算天数后剩余的毫秒数  
                var hours = Math.floor(leave1 / (3600 * 1000));
                //计算相差分钟数  
                var leave2 = leave1 % (3600 * 1000);     //计算小时数后剩余的毫秒数  
                var minutes = Math.floor(leave2 / (60 * 1000));
                //计算相差秒数  
                var leave3 = leave2 % (60 * 1000);       //计算分钟数后剩余的毫秒数  
                var seconds = Math.round(leave3 / 1000);
                // alert(" 相差 "+days+"天 "+hours+"小时 "+minutes+" 分钟"+seconds+" 秒");
                return {
                    days: days,
                    hours: hours,
                    minutes: minutes,
                    seconds: seconds,
                }
            };
            //判断是否有权限，传入权限名称,返回布尔值，true为有权限；false为没有权限
            this.checkPermission = function (permissionName) {
                if ($.inArray(permissionName, CURACCOUNTPERMISSIONS) == -1) {
                    return false;
                } else {
                    return true;
                }
            };

            this.titleLevel1 = function (index) {
                switch (index) {
                    case 1:
                        return '（一）';
                        break;
                    case 2:
                        return '（二）';
                        break;
                    case 3:
                        return '（三）';
                        break;
                    case 4:
                        return '（四）';
                        break;
                    case 5:
                        return '（五）';
                        break;
                    case 6:
                        return '（六）';
                        break;
                    case 7:
                        return '（七）';
                        break;
                    case 8:
                        return '（八）';
                        break;
                    case 9:
                        return '（九）';
                        break;
                    case 10:
                        return '（十）';
                        break;
                    case 11:
                        return '（十一）';
                        break;
                    case 12:
                        return '（十二）';
                        break;
                    case 13:
                        return '（十三）';
                        break;
                    case 14:
                        return '（十四）';
                        break;
                    case 15:
                        return '（十五）';
                        break;
                    case 16:
                        return '（十六）';
                        break;
                    case 17:
                        return '（十七）';
                        break;
                    case 18:
                        return '（十八）';
                        break;
                    case 19:
                        return '（十九）';
                        break;
                    case 20:
                        return '（二十）';
                        break;
                    case 21:
                        return '（二十一）';
                        break;
                    case 22:
                        return '（二十二）';
                        break;
                    case 23:
                        return '（二十三）';
                        break;
                    case 24:
                        return '（二十四）';
                        break;
                    case 25:
                        return '（二十五）';
                        break;
                    case 26:
                        return '（二十六）';
                        break;
                    case 27:
                        return '（二十七）';
                        break;
                    case 28:
                        return '（二十八）';
                        break;
                    case 29:
                        return '（二十九）';
                        break;
                    case 30:
                        return '（三十）';
                        break;
                    case 31:
                        return '（三十一）';
                        break;
                    case 32:
                        return '（三十二）';
                        break;
                    case 33:
                        return '（三十三）';
                        break;
                    case 34:
                        return '（三十四）';
                        break;
                    case 35:
                        return '（三十五）';
                        break;
                    case 36:
                        return '（三十六）';
                        break;
                    case 37:
                        return '（三十七）';
                        break;
                    case 38:
                        return '（三十八）';
                        break;
                    case 39:
                        return '（三十九）';
                        break;
                    default:
                        return "";
                        break;
                }
            }

            this.titleLevel3 = function (index) {
                switch (index) {
                    case 1:
                        return '（1）';
                        break;
                    case 2:
                        return '（2）';
                        break;
                    case 3:
                        return '（3）';
                        break;
                    case 4:
                        return '（4）';
                        break;
                    case 5:
                        return '（5）';
                        break;
                    case 6:
                        return '（6）';
                        break;
                    case 7:
                        return '（7）';
                        break;
                    case 8:
                        return '（8）';
                        break;
                    case 9:
                        return '（9）';
                        break;
                    case 10:
                        return '（10）';
                        break;
                    case 11:
                        return '（11）';
                        break;
                    case 12:
                        return '（12）';
                        break;
                    case 13:
                        return '（13）';
                        break;
                    case 14:
                        return '（14）';
                        break;
                    case 15:
                        return '（15）';
                        break;
                    case 16:
                        return '（16）';
                        break;
                    case 17:
                        return '（17）';
                        break;
                    case 18:
                        return '（18）';
                        break;
                    case 19:
                        return '（19）';
                        break;
                    case 20:
                        return '（20）';
                        break;
                    case 21:
                        return '（21）';
                        break;
                    case 22:
                        return '（22）';
                        break;
                    case 23:
                        return '（23）';
                        break;
                    case 24:
                        return '（24）';
                        break;
                    case 25:
                        return '（25）';
                        break;
                    case 26:
                        return '（26）';
                        break;
                    case 27:
                        return '（27）';
                        break;
                    case 28:
                        return '（28）';
                        break;
                    case 29:
                        return '（29）';
                        break;
                    case 30:
                        return '（30）';
                        break;
                    case 31:
                        return '（31）';
                        break;
                    case 32:
                        return '（32）';
                        break;
                    case 33:
                        return '（33）';
                        break;
                    case 34:
                        return '（34）';
                        break;
                    case 35:
                        return '（35）';
                        break;
                    case 36:
                        return '（36）';
                        break;
                    case 37:
                        return '（37）';
                        break;
                    case 38:
                        return '（38）';
                        break;
                    case 39:
                        return '（39）';
                        break;
                    default:
                        return "";
                        break;
                }
            }

            this.titleLevel4 = function (index) {
                switch (index) {
                    case 1:
                        return '①';
                        break;
                    case 2:
                        return '②';
                        break;
                    case 3:
                        return '③';
                        break;
                    case 4:
                        return '④';
                        break;
                    case 5:
                        return '⑤';
                        break;
                    case 6:
                        return '⑥';
                        break;
                    case 7:
                        return '⑦';
                        break;
                    case 8:
                        return '⑧';
                        break;
                    case 9:
                        return '⑨';
                        break;
                    case 10:
                        return '⑩';
                        break;
                    case 11:
                        return '⑪';
                        break;
                    case 12:
                        return '⑫';
                        break;
                    case 13:
                        return '⑬';
                        break;
                    case 14:
                        return '⑭';
                        break;
                    case 15:
                        return '⑮';
                        break;
                    case 16:
                        return '⑯';
                        break;
                    case 17:
                        return '⑰';
                        break;
                    case 18:
                        return '⑱';
                        break;
                    case 19:
                        return '⑲';
                        break;
                    case 20:
                        return '⑳';
                        break;
                    default:
                        return "";
                        break;
                }
            }

            this.titleLevel5 = function (index) {
                switch (index) {
                    case 1:
                        return 'a.';
                        break;
                    case 2:
                        return 'b.';
                        break;
                    case 3:
                        return 'c.';
                        break;
                    case 4:
                        return 'd.';
                        break;
                    case 5:
                        return 'e.';
                        break;
                    case 6:
                        return 'f.';
                        break;
                    case 7:
                        return 'g.';
                        break;
                    case 8:
                        return 'h.';
                        break;
                    case 9:
                        return 'i.';
                        break;
                    case 10:
                        return 'j.';
                        break;
                    case 11:
                        return 'k.';
                        break;
                    case 12:
                        return 'l.';
                        break;
                    case 13:
                        return 'm.';
                        break;
                    case 14:
                        return 'n.';
                        break;
                    case 15:
                        return 'o.';
                        break;
                    case 16:
                        return 'p.';
                        break;
                    case 17:
                        return 'q.';
                        break;
                    case 18:
                        return 'r.';
                        break;
                    case 19:
                        return 's.';
                        break;
                    case 20:
                        return 't.';
                        break;
                    case 21:
                        return 'u.';
                        break;
                    case 22:
                        return 'v.';
                        break;
                    case 23:
                        return 'w.';
                        break;
                    case 24:
                        return 'x.';
                        break;
                    case 25:
                        return 'y.';
                        break;
                    case 26:
                        return 'z.';
                        break;
                    default:
                        return "";
                        break;
                }
            }

        }
    ]);
})();